/*
 * @Author: jhw
 * @Date: 2025-08-07 21:37:22
 * @LastEditors: jhw
 * @LastEditTime: 2025-08-22 15:36:16
 * @Description:
 */
import type { VueComType } from './common';

// 标签页类型
export interface TabInfo {
  label: string;
  name: string;
  icon: VueComType;
  view: VueComType;
}

// 基本组件类型
export type SurveyComName =
  | 'single-select'
  | 'single-pic-select'
  | 'text-input'
  | 'multiple-select'
  | 'option-select'
  | 'note-desc'
  | 'personal-info-gender'
  | 'personal-info-education'
  | 'personal-info-score'
  | 'date-time';

export type EnhanceComName = 'form-group' | 'table-group';

export enum SurveyComNameEnum {
  singleSelect = 'single-select',
  singlePicSelect = 'single-pic-select',
  textInput = 'text-input',
  multipleSelect = 'multiple-select',
  optionSelect = 'option-select',
  noteDesc = 'note-desc',
  personalInfoGender = 'personal-info-gender',
  personalInfoEducation = 'personal-info-education',
  personalInfoScore = 'personal-info-score',
  dateTime = 'date-time',
}

// 业务组件类型
export type Material = SurveyComName;

// export { default as ColorEditor } from './ColorEditor.vue';
// export { default as DescEditor } from './DescEditor.vue';
// export { default as ItalicEditor } from './ItalicEditor.vue';
// export { default as OptionsEditor } from './OptionsEditor.vue';
// export { default as PositionEditor } from './PositionEditor.vue';
// export { default as SizeEditor } from './SizeEditor.vue';
// export { default as TitleEditor } from './TitleEditor.vue';
// export { default as WeightEditor } from './WeightEditor.vue';
// export { default as OptionsPicEditor } from './OptionsPicEditor.vue';
// export { default as TextInputTypeEditor } from './TextInputTypeEditor.vue';
// export { default as NoteDescTypeEditor } from './NoteDescTypeEditor.vue';
// export { default as DateTypeEditor } from './DateTypeEditor.vue';
// export { default as RateTextEditor } from './RateTextEditor.vue';

// 编辑组件类型
export type EditComName =
  | 'title-editor'
  | 'desc-editor'
  | 'options-editor'
  | 'position-editor'
  | 'size-editor'
  | 'weight-editor'
  | 'italic-editor'
  | 'color-editor'
  | 'text-input-type-editor'
  | 'note-desc-type-editor'
  | 'date-type-editor'
  | 'rate-text-editor'
  | 'options-pic-editor';

export type componentName = Material | EditComName;

export type ComponentMap = {
  [key in componentName]: VueComType;
};
